const SET_USERINFO = 'SET_USERINFO'
const SET_STORES = 'SET_STORES'
const SET_STORE = 'SET_STORE'

export const state = () => ({
  userInfo: null,
  stores: [],
  store: {}
})

export const getters = {
  userInfo: state => state.userInfo || {},
  stores: state => state.stores || {},
  store: state => state.store || {},
  storeName: state => {
    if (state.store) {
      return state.store.title
    }
  },
  // 是否包含总店权限
  isHeadquarters: state => {
    if (state.userInfo && state.userInfo.is_apper) {
      return true
    } else {
      return false
    }
  },
  // 是否是总店
  isHomeStore: state => {
    if (state.userInfo && state.userInfo.current_store_id > 0) {
      return false
    } else {
      return true
    }
  }
}

export const actions = {
  async getUserInfo({ commit }, { $api, redirect, route }) {
    try {
      const { data, code } = await $api.user.getUserInfo()
      if (code === 1) {
        commit(SET_USERINFO, data.user_info)
        commit(SET_STORES, data.store_info)

        if (data.user_info.current_store_id === 0) {
          commit(SET_STORE, {
            title: '总部',
            store_id: 0
          })
        } else {
          const store = data.store_info.find(ele => {
            return ele.store_id === data.user_info.current_store_id
          })
          if (store) {
            commit(SET_STORE, store)
          }
        }
      } else if (code === 5 && route.path !== '/guide') {
        redirect('/guide')
      }
    } catch (error) {
      console.error('getUserInfo error', error)
    }
  }
}

export const mutations = {
  [SET_USERINFO](state, data) {
    state.userInfo = data
  },
  [SET_STORES](state, data) {
    state.stores = data
  },
  [SET_STORE](state, data) {
    state.store = data
  }
}
